package com.java110.mall.chain.supplier;

import com.java110.dto.chain.ChainSupplierProductDto;
import com.java110.dto.chain.ChainSupplierDto;
import com.java110.dto.storeOrder.StoreOrderDto;
import com.java110.dto.storeOrder.StoreOrderCartDto;
import com.java110.vo.ResultVo;

import java.util.List;

public interface ISupplierAdapter {

    /**
     * <p>调用链校验</p>
     *
     *
     * @param storeOrderDto  订单调用链数据
     * @return RoomDto 对象数据
     */
    ResultVo validateChainOrder(StoreOrderDto storeOrderDto, List<StoreOrderCartDto> storeOrderCartDtos, ChainSupplierDto chainSupplierDto) throws Exception;


    /**
     * <p>通知链校验</p>
     *
     *
     * @param storeOrderDto  订单调用链数据
     * @return RoomDto 对象数据
     */
    ResultVo notifyChainOrder(StoreOrderDto storeOrderDto, List<StoreOrderCartDto> storeOrderCartDtos, ChainSupplierDto chainSupplierDto) throws Exception;

    /**
     * <p>通知链校验</p>
     *
     *
     * @param chainSupplierProductDto  订单调用链数据
     * @return RoomDto 对象数据
     */
    ResultVo queryProducts(ChainSupplierProductDto chainSupplierProductDto, ChainSupplierDto chainSupplierDto) throws Exception;

    /**
     * <p>查询单个商品信息</p>
     *
     *
     * @param chainSupplierProductDto  订单调用链数据
     * @return RoomDto 对象数据
     */
    ResultVo querySingleProduct(ChainSupplierProductDto chainSupplierProductDto, ChainSupplierDto chainSupplierDto) throws Exception;


    /**
     * <p>获取评论信息</p>
     *
     *
     * @param chainSupplierProductDto  订单调用链数据
     * @return RoomDto 对象数据
     */
    ResultVo queryComments(ChainSupplierProductDto chainSupplierProductDto, ChainSupplierDto chainSupplierDto) throws Exception;


    /**
     * <p>查询物流信息</p>
     *
     *
     * @param chainSupplierProductDto  订单调用链数据
     * @return RoomDto 对象数据
     */
    ResultVo queryLogisticsInfo(ChainSupplierProductDto chainSupplierProductDto, ChainSupplierDto chainSupplierDto) throws Exception;



    /**
     * <p>将供应链商品信息写入店铺信息</p>
     *
     *
     * @param chainSupplierProductDto  订单调用链数据
     * @return RoomDto 对象数据
     */
    ResultVo insertSingleProduct(ChainSupplierProductDto chainSupplierProductDto, ChainSupplierDto chainSupplierDto) throws Exception;

    ResultVo callBackChainProduct(String param,ChainSupplierDto tmpChainSupplierDto);
}
